/**
 * 
 */
package cn.bigcontainer.alt.meta.service;

import java.util.Map;

import cn.bigcontainer.alt.meta.dto.MCrud;
import cn.bigcontainer.alt.meta.dto.MViewDto;
import cn.bigcontainer.alt.meta.po.MViewProperty;

/**
 * WOS视图服务，实现列表、表单等视图数据获取.
 * 
 * @author cailei
 * @date 2017年6月14日
 */
public interface MCrudService {

	/**
	 * @param appId
	 * @param req
	 *            包含查询视图属性参数（WO_SEARCHPROPS.W_ID=xxx,...）、本方对象属性参数（WO_PROPS.W_ID
	 *            =xxx,...）、 本方对象关系参数（WO_RELATIONS.W_ID=xxx,...）、分页参数（woStart=1,
	 *            woRowMax=10）、排序字段参数（woOrderBy=WO_LISTPROPS.W_ID asc,...）
	 * @return
	 */
	public MViewDto loadListData(String appId, Map<String, Object> req);
	
	/**
	 * @param appId
	 * @param keyVal
	 * @param req
	 */
	public MViewDto loadCreateForm(String appId, String keyVal, Map<String, Object> req);
	
	/**
	 * @param appId
	 * @param keyVal
	 * @param req
	 * @return
	 */
	public MViewDto loadUpdateForm(String appId, String keyVal, Map<String, Object> req);
	
	/**
	 * @param appId
	 * @param req
	 * @return
	 */
	public MCrud loadCrud(String appId, Map<String, Object> req);

	/**
	 * @param appId
	 * @param req
	 * @return
	 */
	public MCrud loadCrudMeta(String appId, Map<String, Object> req);

	/**
	 * @param appId
	 * @param req
	 */
	public MViewDto submitCreateForm(String appId, Map<String, Object> req);

	/**
	 * @param appId
	 * @param req
	 */
	public MViewDto submitUpdateForm(String appId, Map<String, Object> req);

	/**
	 * @param appId
	 * @param keyVals
	 * @param req
	 */
	public void deleteObjects(String appId, String keyVals, Map<String, Object> req);

    MViewProperty loadSelectorNameValues(String appId, String propertyId, String propertyValue, Map<String, Object> req);

	/**
	 * 根据主键值，获取名称字段的值
	 * @param id appId
	 * @param propertyValue 主键值
	 * @return
	 */
	Object[] loadSelectorNameValues(String id, String propertyValue);

    void importExcel(String id, Integer fileId, Map<String, Object> req);
}
